// 第一步：页面渲染完之后，请求后台，获取[MOCK_DATA]数据，加载[MOCK_DATA]信息
// 第二步：完成[MOCK_DATA]查询功能
// 第三步：下拉加载更多数据的功能

//overwrite the method of $.post
$.post = function (url, data, callback, dataType) {
    return jQuery.ajax({
        'type': 'POST',
        'url': url,
        'contentType': 'application/json;charset=UTF-8',
        'data': data,
        'dataType': dataType,
        'success': callback
    });
};

var url = "hbn/getdata"; // 请求获取数据的url
var totalPage = 1; //一共有多少页数据
var pageSize = 20; // 每页显示30条数据
var currentPage = 1; // 当前第几页数据，默认为1
var isLoading = false; // 是否正在加载更多的数据

// 页面渲染完之中执行的代码
$(function () {
    // 绑定事件，监听滚动条下拉的动作
    bindScrollEvent();

    // 请求后台，加载[MOCK_DATA]信息
    queryStudent(1);
});

function queryForm() {

    // 绑定事件，监听滚动条下拉的动作
    bindScrollEvent();
    // 清空[MOCK_DATA]的数据
    $("#studentDataBody").html("");
    // 清空[MOCK_DATA]为空的提示信息
    $("#emptyInfo").html("");
    // 查询[MOCK_DATA]
    queryStudent(1);
}

//请求后台，加载[MOCK_DATA]信息
function queryStudent(pageNum) {

    if (pageNum > totalPage) {
        $("#emptyInfo").html("没有更多的[MOCK_DATA]数据了......");
        $(window).unbind("scroll");
    }
    if (isLoading) {
        return;
    } else {
        isLoading = true; // 修改状态为正在加载数据
    }


    var params = {"pageSize": pageSize, "pageNum": pageNum};
    var reqData = {
        name: $("#nickname").val(),
        creator: $("#creator").val(),
        major: $("#majorName").val(),
        reqAddr: $("#reqAddr").val(),
        reqMethod: $("#reqMethod").val(),
        dataType: $("#dataType").val()
    };

    //$.ajaxSetup({contentType:"application/json;charset=UTF-8"});
    // 进行post请求
    var jqxhr =
        $.post(
            url + "?" + jQuery.param(params),
            JSON.stringify(reqData),
            function (data, textStatus, jqXHR) {
                // 加载[MOCK_DATA]信息
                totalPage = data.totalPage; // 一共有多少页数据
                currentPage = data.currentPage; // 获取当前第几页数据
                var reponseJson = data.dataList; // [MOCK_DATA]记录信息
                if (totalPage == 0) {
                    $("#emptyInfo").html("没有更多的[MOCK_DATA]数据了......");
                }
                //加载[MOCK_DATA]的数据
                showStudentData(reponseJson);

                isLoading = false;
            },
            "json")
            .success(function () {
                sign = 0;
            })
            .error(function () {
                alert("error");
            })
            .complete(function () {
                sign = 1;
            });
}

//加载[MOCK_DATA]的数据;
function showStudentData(reponseJson) {
    var dataHTML = "";
    $.each(reponseJson, function (idx, obj) {
        dataHTML += "<tr>";
        dataHTML += "<td>" + obj.name + "</td>"; // 获取[MOCK_DATA]接口名
        dataHTML += "<td>" + obj.creator + "</td>"; // 获取[MOCK_DATA]创建者姓名
        dataHTML += "<td>" + obj.createtime + "</td>"; // 获取[MOCK_DATA]创建时间姓名
        dataHTML += "<td>" + obj.major + "</td>"; // 获取[MOCK_DATA]专业名称
        dataHTML += "<td>" + obj.reqAddr + "</td>";//请求地址
        dataHTML += "<td>" + obj.reqMethod + "</td>";//请求方式
        //dataHTML += "<td>" + obj.data + "</td>";//请求数据

        if (obj.data.length >= 70) {
            dataHTML += "<td title='"+obj.data+"'>"+obj.data.slice(0,170)+"...</td>"; // 获取[MOCK_DATA]Data的值
        } else {
            dataHTML += "<td>"+obj.data+"</td>"; // 获取[MOCK_DATA]Data的值
        }
        dataHTML += "</tr>";
    });
    $("#studentDataBody").append(dataHTML);
}

function bindScrollEvent() {
    // 添加滚动监听事件
    $(window).scroll(function () {
        var docHeight = $(document).height(); // 获取整个页面的高度
        var winHeight = $(window).height(); // 获取当前窗体的高度
        var winScrollHeight = $(window).scrollTop(); // 获取滚动条滚动的距离
        if (docHeight - 30 <= winHeight + winScrollHeight) {
            // 加载更多的[MOCK_DATA]数据
            queryStudent(currentPage + 1);
        }

    });
}
